
import hashlib
import base64

def encrypt(data, key='jyzg123456'):
    # 使用 MD5 算法计算密钥的哈希值
    key = hashlib.md5(key.encode()).hexdigest()

    # 初始化变量
    x = 0
    length_data = len(data)  # 数据长度
    length_key = len(key)  # 密钥长度
    char = ''  # 用于存储重复的密钥字符串
    str_encrypted = ''  # 加密后的字符串

    # 生成一个字符串，通过重复密钥直到其长度与数据长度相同
    while len(char) < length_data:
        char += key[x]
        x = (x + 1) % length_key

    # 对每个字符进行加密
    for i in range(length_data):
        # 加密字符并添加到加密字符串中
        encrypted_char = chr(ord(data[i]) + ord(char[i]) % 256)
        str_encrypted += encrypted_char
    print(str_encrypted)
    # 返回 Base64 编码的加密字符串
    return base64.b64encode(str_encrypted.encode()).decode()

def decrypt(data, key='jyzg123456'):

    key = hashlib.md5(key.encode()).hexdigest()
    x = 0
    length_data = len(data)  # 注意这里的长度是指解码后的数据长度
    length_key = len(key)
    char = ''
    str_decrypted = ''

    # 将 Base64 编码的数据解码回原始字符串
    data = base64.b64decode(data).decode()

    # 生成一个字符串，通过重复密钥直到其长度与数据长度相同
    while len(char) < length_data:
        char += key[x]
        x = (x + 1) % length_key

    # 对每个字符进行解密
    for i in range(length_data):
        # 解密字符并添加到解密字符串中
        try:
            decrypted_char = chr(ord(data[i]) - ord(char[i]) % 256)
            str_decrypted += decrypted_char
        except:
            continue
    return str_decrypted


a="abcder"
a1=encrypt(a, key='jyzg123456')
print(a1)
b1=decrypt(a1, key='jyzg123456')
print(b1)